1. Field of the Invention
This invention relates to profiling and reusing software development assets and more particularly relates to selecting previously built software assets to be used in new implementations of internet-based applications, software applications, and business process applications.
2. Description of the Related Art
In the development cycle of new applications, software assets have often been previously created to perform functions similar to many of the features of the new application. For example, a new software application may require a special search and sort function for a particular data type, and the software asset—perhaps a search utility—to complete this function may already exist somewhere. In the business process environment, many processes to perform the functional requirements of a new application may have been performed before. For example, a new fast food restaurant may be expected to require a certain production rate of a certain mix of menu items, and various food production line design configurations may already exist and may be available for reuse. In an internet-application based environment, certain features of the online business may already be available—for example utilities to allow orders, allow new users to register, and to automatically send out newsletters.
The present technology allows some reuse of previously created assets. For example, the Rational® suite of tools includes Rational® Software Architect, Rational® ClearQuest®, and the Rational® ClearCase® Repository, and allows users to select previously created software assets with similar functionality to the functions required for a new application. However, the current asset reuse technology does not address the performance of an asset relative to a service quality element of the new application. For example, a user can select an asset that allows a website to accept book orders, but there is no information about the rate at which orders can be accepted, the size of orders allowed, or the memory used by the asset when it is incorporated to a system. The service quality elements, Quality of Service (QoS) level, or similar descriptions of the performance requirements of an asset are not accessible to a developer reviewing the stored assets.
In the current state of the art, the person reusing an asset must select assets based on a brief written description of the functionality of an asset, experience, and trial-and-error. Therefore, an expert on the assets, typically the author of the asset, is utilized to reuse particular assets. This requires more expense, time, and effort, than if a developer could select and reuse assets without expert help.
Furthermore, the expert may be well-versed in the assets available for reuse but not in the target application to be performed. For example, an expert sales person would be better suited in selecting appropriate performance criteria for a website (e.g. sales volumes, number of product lines supported, number of registered users supported, etc.) than a software asset expert, but the current technology requires a disconnect between the target application expert and the selection of assets for reuse.
Besides requiring an expert in the assets to select appropriate assets for a new application, there may be interactions between QoS elements that are not apparent even to an expert utilizing the asset. For example, an asset may be a sorting tool that sorts input data records. The time that the sorting tool requires to sort data records may depend upon the length of the data records, the number of data records, and the hardware that the sort utility is running on. These relationships may interact. For example, the sort utility may perform well with long records or with many short records, but perform poorly with many long records. A human user may have difficulty understanding that the combination of QoS elements for the prospective application may make the sort utility inappropriate for the target application even though the experience of the user indicates that the asset may have met one or more individual QoS requirements for a similar application.